package pack;
public class Shop implements Runnable {
int finishTime = 50;
int maxProcessingTime = 5;
int minProcessingTime = 1;
int openCounters = 3;
private Scheduler scheduler;
private Gui gui;
public Shop() {
scheduler = new Scheduler();
for (int i = 0; i < openCounters; i++) {
Counter counter = new Counter();
scheduler.addCounter(counter);
}
gui = new Gui(openCounters, scheduler);
}
@Override
public void run() {
int currentTime = 0;
while (currentTime < finishTime) {
currentTime++;
int processingTime = (int) (Math.random() * (maxProcessingTime - minProcessingTime) * 2);
int arrivalTime = (int) (currentTime + Math.random() * 3);
Client client = new Client(arrivalTime, processingTime);
scheduler.sendClientToCounter(client, arrivalTime);
scheduler.serveClients();
gui.displayData(scheduler.getCounters());
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
System.out.println("Stopped");
scheduler.stopCounters();
displayAverageWaitingTime();
displayAverageServingTime();
displayPeakHour();
gui.displayConclusions();
}
public void displayAverageWaitingTime() {
System.out.printf("\nAverage waiting time = %f\n", scheduler.getAverageWaitingTime());
}
public void displayAverageServingTime() {
System.out.printf("\nAverage serving time = %f\n", scheduler.getAverageServingTime());
}
public void displayPeakHour() {
System.out.printf("\nPeak hour = %d\n", scheduler.getPeakHour());
}
}